<template>
  <div class="app-container">
    <el-form :model="queryParam" ref="queryForm" :inline="true">
      <el-form-item label="题目ID：" >       
          <el-input v-model="queryParam.id" ref="questionId" width="30px" placeholder="请输入试题Id" clearable></el-input>
      </el-form-item>
      <el-button type="primary" @click="selectquestionId">查询</el-button>
      &nbsp;
      <el-form-item label="年级：">
        <el-select v-model="queryParam.level" placeholder="年级"  @change="levelChange" clearable>
          <el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="学科：">
        <!-- zjx 2023/5/7 添加事件selectsubjectId -->
        <el-select v-model="queryParam.subjectId" placeholder="学科" @change="selectsubjectId" clearable> 
                   <!-- zjx  -->
          <el-option v-for="item in subjectFilter" :key="item.courseId" :value="item.courseId" :label="item.courseName"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="题型：">
        <el-select v-model="queryParam.questionType" @change="selectType" clearable>
         <!-- zjx  -->
          <el-option v-for="item in questionType" :key="item.key" :value="item.key" :label="item.value"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="submitForm">查询所有题目</el-button>
                <!-- <el-button type="primary" @click="search">刷新数据</el-button> -->
        <el-popover placement="bottom" trigger="click">
        
        </el-popover>
      </el-form-item>
    </el-form>
    <!-- <el-table :data="tableData" border fit highlight-current-row style="width: 100%"> -->
      <el-table :data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)" border fit highlight-current-row style="width: 100%">
      <el-table-column prop="questionId" label="Id" width="90px"/>
      <el-table-column prop="courseId" label="学科" width="120px"/>
      <el-table-column prop="type" label="题型"  width="70px"/>
      <el-table-column prop="questionName" label="题干" show-overflow-tooltip/>
      <el-table-column prop="score" label="分数" width="60px"/>
      <el-table-column label="答案" width="100px">
        <!-- <el-table-column prop="answerVos" label="答案" width="100px"> -->
        <template slot-scope="scope">
          <div v-if="scope.row.type != 2" >
              <span style="color:rgb(205, 2, 9)">
                {{scope.row.answer}}
              </span>
            </div>
            <div v-if="scope.row.type == 2" >
              <span style="color:rgb(205, 2, 9)" v-for="item in scope.row.answerVos">
                {{item.prefix}}
              </span>
            </div>
          </template>
        </el-table-column>
      <!-- <el-table-column v-if="answer != null"  prop="answer" label="答案" width="60px"/>  -->
      <el-table-column prop="time" label="创建时间" width="160px"/>
      <el-table-column label="操作" align="center" width="220px">
        <template slot-scope="{row}">
          <el-button size="mini"   @click="showQuestion(row)">预览</el-button>
          <el-button size="mini"  @click="editQuestion(row)">编辑</el-button>
          <el-button size="mini"  type="danger" @click="deleteQuestion(row)" class="link-left">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
    <el-pagination align='center' @size-change="handleSizeChange" @current-change="handleCurrentChange" 
            :current-page="currentPage" 
            :page-sizes="[2,5,10,20]" 
            :page-size="pageSize" 
            layout="total, sizes, prev, pager, next, jumper" 
            :total="tableData.length">
            </el-pagination>
    <!-- <pagination 
    v-show="total>0" 
    :total="total" 
    :page.sync="queryParam.pageIndex" 
    :limit.sync="queryParam.pageSize"
    @pagination="search"
    /> -->
    <el-dialog :visible.sync="questionShow.dialog" style="width: 100%;height: 100%">
      <QuestionShow :qType="questionShow.qType" :question="questionShow.question" :qLoading="questionShow.loading"/>
    </el-dialog>
  </div>
</template>

<script>
import { mapGetters, mapState, mapActions } from 'vuex'
import Pagination from '@/components/Pagination'
import QuestionShow from '@/components/Show'


export default {
  components: { Pagination, QuestionShow },
  props:['tableData'],
  data () {
    return {
      // answer :{
      //   prefix:''
      // },
      // param:{
      //   typee:'',
      // },
      editUrlEnum :[
        {key :'1',
        name:'单选题',
        value:'question/edit/single'} ,
         {key :'2',
        name:'多选题',
        value:'question/edit/mmultiple'},
        {key :'3',
        name:'问答题',
        value:'question/edit/essay'},              //zjx 2023/5/4
        {key :'4',
        name:'判断题',
        value:'question/edit/judgment'},
      ],

      levelEnum:[
      { key :'1',value:'一年级'},
      { key :'2',value:'二年级'},
      { key :'3',value:'三年级'},
      { key :'4',value:'四年级'},
      { key :'5',value:'大学年级'},
       ] ,
             subjectFilter: [ 
      // { key :'1',value:'数学'},
      // { key :'2',value:'语文'},
      // { key :'3',value:'英语'},
      // { key :'4',value:'java'},
      // { key :'5',value:'c++'},
       ] ,
      queryParam: {
        id: null,
        level: null,
        subjectId: null,
        pageIndex: 1,
        pageSize: 10
      },
          questionType: [
       { key :'1',value:'单选题'},
      { key :'2',value:'多选题'},
      { key :'3',value:'简答题'},
      { key :'4',value:'判断题'},
       ] ,

      listLoading: true,
      tableData: [
      ],
      currentPage: 1, // 当前页码
      total: null, // 总条数
      pageSize: 2 // 每页的数据条数
      ,
      questionShow: {
        qType: 1,
        dialog: false,
        question: null,
        loading: false
      }
    }
  },
    created () {
   // this.initSubject()
   // this.search()
  },
    mounted(){
      this.getcourseId();
      this.search();
    },
  methods: {
    //每页条数改变时触发 选择一页显示多少行
    handleSizeChange(val) {
                    console.log(`每页 ${val} 条`);
                    this.currentPage = 1;
                    this.pageSize = val;
                },
                //当前页改变时触发 跳转其他页
                handleCurrentChange(val) {
                    console.log(`当前页: ${val}`);
                    this.currentPage = val;
                },
    //获取所有课程信息
    getcourseId(){
        this.$http.get("course/get").then(res =>{
          console.log("加载数据成功")
          this.subjectFilter=res.data;
          console.log(this.subjectFilter[1].courseId)
        })
      },
    //zjx 2023/5/7 
    selectquestionId(){
      this.tableData = [];//清空当前页数据，不如查询数会push进当前页面数据
      var questionId = this.$refs.questionId.value;
      this.$http.get("question/id?id="+questionId).then(
        re=>{
           const res = re;
           console.log(res.data.answerVos[0].prefix)
           if(res.data.questionId!==undefined){
            //输入不存在id传进来的是未定义，不是未空
          this.tableData.push(res.data);//eleui表格是用数组来排序，如果是数据是对象，要将对象转为数组
          console.log("加载数据成功")
           }else{
             this.$message.error("试题不存在")
             console.log("加载数据失败")
           }
          //  alert(this.$refs.type.value)
    })
  },
      //zjx 2023/5/7
    selectsubjectId(value){
      var courseId = value;
      this.$http.get("question/courseId?courseId="+courseId).then(
         re=>{
           const res = re;
           if(res!==null){
          this.tableData =res.data;
                  console.log(res.list instanceof Array)
          console.log("加载数据成功")
           }else{
             console.log("加载数据失败")
           }
    })
  },
  //zjx 2023/5/7
  selectType(value){
    var type = value;
      this.$http.get("question/type?type="+type).then(
         re=>{
           const res = re
           if(res!==null){

          this.tableData =res.data
                  console.log(res.data.list)
          console.log("加载数据成功")
           }else{
             console.log("加载数据失败")
           }
    })
  },
    submitForm () {
      // this.queryParam.pageIndex = 1
      this.search()
    },
    search () {
      this.listLoading = true
         this.$http.get("question/get").then(
         re=>{
           const res = re
           if(res!==null){
          // this.tableData =res.data
          this.tableData =res.data
                  // console.log(res.list instanceof Array)
                  // console.log(res.data.list)
          console.log("加载数据成功")
           }else{
             console.log("加载数据失败")
           }
             }
     );  


      // questionApi.pageList(this.queryParam).then(data => {
      //   const re = data.response
      //   this.tableData = re.list
      //   this.total = re.total
      //   this.queryParam.pageIndex = re.pageNum
      //   this.listLoading = false
      // })
    },
    levelChange () {
      this.queryParam.subjectId = null
     // this.subjectFilter = this.subjects.filter(data => data.level === this.queryParam.level)
    },
    addQuestion () {
      this.$router.push('/exam/question/edit/singleChoice')
    },
    showQuestion (row) {

      let _this = this
      this.questionShow.dialog = true
      this.questionShow.loading = true
   
 this.$http.get("question/id?id="+row.questionId).then(
         re=>{
        
         _this.questionShow.qType = re.data.type

        _this.questionShow.question = re.data
        _this.questionShow.loading = false
             console.log("question :"+_this.questionShow.question.items)
             console.log("type :"+re.data.questionType)

             console.log("type :"+_this.questionShow.qType)
         })

      // questionApi.select(row.id).then(re => {
      //   _this.questionShow.qType = re.response.questionType
      //   _this.questionShow.question = re.response
      //   _this.questionShow.loading = false
      // })
    },
    editQuestion (row) {
    //zjx,根据不同类型跳转到不同页面修改
      if(row.type == 1){
        this.$router.push({ path: 'singleProblem' ,query: { id: row.questionId }})
      }
      if(row.type == 2){
        this.$router.push({ path: 'multipleProblem' ,query: { id: row.questionId }})
      }
      if(row.type == 3){
        this.$router.push({ path: 'essayProblem' ,query: { id: row.questionId }})
      }
      if(row.type == 4){
        this.$router.push({ path: 'judgmentProblem' ,query: { id: row.questionId }})
      }
      // let url ='singleProblem'
      // this.$router.push({ path: url ,query: { id: row.questionId }})

     // this.$router.push({ path: url, query: { id: row.id } })
    },
    deleteQuestion (row) {
      //zjx
      this.$http.get("question/delete/"+row.questionId).then(re => {
        if (re.data != null) {
          this.$message.success(re.message)
        } else {
          this.$message.error(re.message)
        }
      })
      // let _this = this
      // questionApi.deleteQuestion(row.id).then(re => {
      //   if (re.code === 1) {
      //     _this.search()
      //     _this.$message.success(re.message)
      //   } else {
      //     _this.$message.error(re.message)
      //   }
      // })
    },
  //     enumFormat: (state) => (arrary, key) => {
  //   return format(arrary, key)
  // },
    questionTypeFormatter (row, column, cellValue, index) {
      return this.enumFormat(this.questionType, cellValue)
    },
    subjectFormatter (row, column, cellValue, index) {
      return this.subjectEnumFormat(cellValue)
    },
  //     computed: {
  //   ...mapGetters('enumItem', ['enumFormat']),
  //   ...mapState('enumItem', {
  //     questionType: state => state.exam.question.typeEnum,
  //     editUrlEnum: state => state.exam.question.editUrlEnum,
  //     levelEnum: state => state.user.levelEnum
  //   }),
  //   ...mapGetters('exam', ['subjectEnumFormat']),
  //   ...mapState('exam', { subjects: state => state.subjects })
  // }
  },
  watch:{
      tableData:function(newData,oldData){
				console.log(newData)  //newData就是orderData
				this.newOrderData = newData;     
				//	methods的函数在这里调用可以获取到newOrderData的值	      
				// this.order();
			}
    }

}

</script>
